home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / gfx / misc / CatMake124.lha / RexxTricks_3720.lha / rexxtricks / rexxtricks.dok < prev    next >
Encoding:
Text File  |  1994-09-14  |  48.9 KB  |  1,507 lines

  1.  
  2.  
  3. ##########################################################################
  4.  
  5.                     'rexxtricks.library' 37.20 (28.8.94)
  6.  
  7.      Copyright (C) 1994 Jürgen Kohrmeyer, <J_Kohrmeyer@wilam.north.de>
  8.  
  9. ##########################################################################
  10.  
  11.    Die 'rexxtricks.library' ist eine ARexx-Funktionslibrary. Die Funktionen
  12. lassen sich keinem bestimmten Anwendungsgebiet zuordnen, es ist vielmehr
  13. eine Sammlung von Funktionen die ich schon immer beim Programmieren mit
  14. ARexx vermißt habe.  Vorschläge für andere nützliche Funktionen sind
  15. immer willkommen, also teilt mir Eure Wünsche bitte mit.
  16.  
  17. * Copyright                   Copyright und sonstige rechtliche Dinge
  18. * Adresse des Autors          Wohin man Kommentare und Bugreports schickt
  19. * History                     Geschichtliche Entwicklung der Library
  20. * Systemvoraussetzungen       68040, 18MB Ram ;-)
  21. * Installation                Installation der Library
  22. * Funktionen der Library      Übersicht über die Funktionen der Library
  23. * Das VIEWLIST() Fenster      Bedienung des Auswahlfensters
  24. * Index                       Inhaltsverzeichnis
  25.  
  26. Copyright und sonstige rechtliche Dinge
  27. ***************************************
  28.  
  29.    Die 'rexxtricks.library' ist FREEWARE, das Copyright liegt weiterhin beim
  30. Autor, Jürgen Kohrmeyer. Die Library darf von jedem benutzt werden. Das
  31. Archiv darf frei kopiert werden solange es unverändert weitergegeben, und
  32. nur eine geringe Kopiergebühr erhoben wird. Die Weitergabe per DFUe wird
  33. von mir befürwortet. Das Archiv darf in Public-Domain Sammlungen
  34. aufgenommen werden, es darf jedoch *nicht* auf Disketten vertrieben
  35. werden die mehr als 5,- DM kosten! Dieses Limit gilt *insbesondere* für
  36. deutsche PD-Händler!
  37.  
  38.    Der Autor gibt keine Garantie für die Zuverlässigkeit der im Archiv
  39. befindlichen Dateien! Sie benutzen die Library auf eigene Gefahr! Der Autor
  40. kann nicht für irgendwelche Schäden haftbar gemacht werden, die durch die
  41. Anwendung der 'rexxtricks.library' entstehen.
  42.  
  43.    Die Funktionen 'WHATIS' und 'WHATISTYPES' benutzen die 'whatis.library'.
  44. Die 'whatis.library' ist © by Sylvain Rougier und Pierre Carrette.
  45.  
  46.    Die Funktion 'CRC32' verwendet die 32-Bit CRC-Tabelle die auch beim
  47. ZModem-Protokoll Verwendung findet. Diese Tabelle ist © by Gary S. Brown.
  48. Der Quelltext der Funktion wurde dem Programm 'crc32' von Stephen Satchell,
  49. Satchell Evaluations and Chuck Forsberg, Omen Technology entnommen.
  50.  
  51.    Dem Paket liegen ARexx-Scripts für die Verwendung mit 'MicroDot' bei.
  52. MicroDot ist © by Oliver Wagner
  53.  
  54.    Dem Paket liegen ARexx-Scripts für die Verwendung mit "Zodiac's Point"
  55. bei. "Zodiac's Point" ist © by Ralph Seichter
  56.  
  57. Adresse des Autors
  58. ******************
  59.  
  60.    Der Autor ist unter folgenden Adressen erreichbar, bitte vorzugsweise
  61. die E-Mail Adresse benutzen:
  62.  
  63. Postanschrift:
  64.           Jürgen Kohrmeyer
  65.           Oststraße 2
  66.           49143 Bissendorf
  67.  
  68. E-Mail:
  69.           j_kohrmeyer@wilam.north.de
  70.  
  71. Entstehungsgeschichte
  72. *********************
  73.  
  74. V37.9ß
  75.         * Erste Betaversion
  76.  
  77. V37.10ß
  78.         * Schlimmer Bug im Dispatcher beseitigt, der Aufruf einer nicht
  79.           bekannten Funktion führte zu Fehlern. Da ARexx selbst Funktionen
  80.           an Libraries schickt, wenn diese sonst nicht bekannt sind, kam
  81.           der ARexx-Interpreter durcheinander.
  82.  
  83.         * Mehrere Enforcer-Hits beseitigt
  84.  
  85. V37.11ß
  86.         * Die Funktion 'VIEWLIST' kann eine Liste jetzt aufsteigend
  87.           sortiert anzeigen
  88.  
  89.         * Neue Funktion 'QSORT' implementiert
  90.  
  91.         * Neue Funktion 'BSEARCH' implementiert
  92.  
  93.         * Neue Funktion 'SEQSEARCH' implementiert
  94.  
  95. V37.12ß
  96.         * Bei der Funktion 'VIEWLIST' kann jetzt die Breite des Fensters
  97.           angegeben werden
  98.  
  99.         * Das Fenster der 'VIEWLIST'-Funktion hat eine Suchfunktion bekommen
  100.  
  101.         * Die Tastaturbedienung des Fensters der 'VIEWLIST'-Funktion wurde
  102.           stark erweitert
  103.  
  104. V37.13ß
  105.         * Im Fenster der 'VIEWLIST'-Funktion lassen sich Einträge jetzt
  106.           auch mit der Leertaste markieren
  107.  
  108. V37.14ß
  109.         * 'SEQSEARCH' umbenannt in 'LSEARCH' für lineare Suche
  110.  
  111.         * 'QSORT' kann jetzt auch eine Stem-Variable direkt sortieren
  112.  
  113.         * Neue Funktion 'GETKEY' implementiert
  114.  
  115. V37.15
  116.         * Erste öffentliche Release
  117.  
  118.         * Kleinere interne Bugs beseitigt
  119.  
  120.         * Neue Funktion 'MATCHPATTERN' implementiert
  121.  
  122.         * 'QSORT', 'BSEARCH' und 'LSEARCH' können jetzt optional auch
  123.           Groß- und Kleinbuchstaben unterscheiden
  124.  
  125.         * Neue Dokumentation, jetzt auch als AmigaGuide
  126.  
  127. V37.16
  128.         * Bug in der Funktion 'MAKEPATH' beseitigt
  129.  
  130.         * Neue Funktion 'WHATIS' implementiert
  131.  
  132.         * Neue Funktion 'WHATISTYPES' implementiert
  133.  
  134. V37.17
  135.         * Neue Funktion 'GETDEFAULTPUBSCREEN' implementiert
  136.  
  137.         * Neue Funktion 'SETDEFAULTPUBSCREEN' implementiert
  138.  
  139.         * Neue Funktion 'GETPUBSCREENMODES' implementiert
  140.  
  141.         * Neue Funktion 'SETPUBSCREENMODES' implementiert
  142.  
  143.         * Neue Funktion 'PUBSCREENTOFRONT' implementiert
  144.  
  145.         * Neue Funktion 'PUBSCREENTOBACK' implementiert
  146.  
  147.         * Neue Funktion 'PUBSCREENLIST' implementiert
  148.  
  149. V37.18
  150.         * Das Fenster der 'VIEWLIST'-Funktion hat ein Zoom-Gadget bekommen
  151.  
  152.         * Die 'locale.library' wird jetzt vollständig unterstützt
  153.  
  154.         * Neue Funktion 'CRC32' implementiert
  155.  
  156. V37.19
  157.         * Einige interne Bugs beseitigt
  158.  
  159. V37.20
  160.         * Neue Funktion 'READFILE' implementiert
  161.  
  162.         * Neue Funktion 'WRITEFILE' implementiert
  163.  
  164. Systemvoraussetzungen
  165. *********************
  166.  
  167.    Die 'rexxtricks.library' benötigt mindestens Kickstart und Workbench
  168. 2.04.  Der ARexx-Interpreter RexxMast muß vor der Verwendung gestartet
  169. werden.
  170.  
  171.    Die Funktionen 'WHATIS' und 'WHATISTYPES' benutzen die 'whatis.library'.
  172. Die 'whatis.library' muß sich dazu im logischen Verzeichnis LIBS:
  173. befinden.
  174.  
  175.    Die 'whatis.library' sollte man in jeder gut sortierten Mailbox mit
  176. Amiga-Filebereich bekommen. Die Version 4.0 der Library befindet sich auch
  177. auf der AmigaLibDisk 995 der Fred Fish Serie.
  178.  
  179. Installation
  180. ************
  181.  
  182.    Kopieren Sie die 'rexxtricks.library' ins logische Verzeichnis
  183. LIBS:.  Zur Unterstützung einer anderen Sprache als Deutsch wird die
  184. Datei rexxtricks.catalog benötigt, kopieren Sie die Datei nach
  185. LOCALE:catalogs ins entsprechende Unterverzeichnis. Zur Zeit ist
  186. leider nur ein englischer Catalog verfügbar.
  187.  
  188.    Die Verwendung der Library setzt voraus daß der ARexx-Interpreter zuvor
  189. gestartet wurde. Das Programm, das den Arexx-Interpreter startet, befindet
  190. sich in der Schublade SYS:System und heißt RexxMast. Falls dieses Programm
  191. in Ihrem System nicht automatisch gestartet wird müssen Sie es manuell
  192. starten. Die einfachste Methode ist es aber, das Programm RexxMast in der
  193. Batchdatei S:User-Startup aufzurufen. Dadurch wird ARexx bei jedem Start
  194. des Rechners automatisch aufgerufen und im System installiert.
  195.  
  196.    Zum Starten des ARexx-Interpreters fügen Sie folgende Zeile in Ihre
  197. S:User-Startup ein:
  198.  
  199.      SYS:System/RexxMast >NIL:
  200.  
  201. Die Funktionen der 'rexxtricks.library' 37.20 (28.8.94)
  202. *******************************************************
  203.  
  204. * GETENV()               Environment-Variable auslesen
  205. * SETENV()               Environment-Variable einstellen
  206. * UNSETENV()             Environment-Variable löschen
  207.  
  208. * PATHPART()             Verzeichnis eines Pfades ermitteln
  209. * FILEPART()             Dateiname eines Pfades ermitteln
  210. * MAKEPATH()             Pfad aus Verzeichnis- und Datei zusammensetzen
  211.  
  212. * GETCOMMENT()           Dateikommentar auslesen
  213. * SETCOMMENT()           Dateikommentar einstellen
  214.  
  215. * GETPROTECTION()        Schutzbits einer Datei auslesen
  216. * SETPROTECTION()        Schutzbits einer Datei einstellen
  217.  
  218. * MATCHPATTERN()         String mit Namensmuster vergleichen
  219.  
  220. * GETKEY()               Auf einen Tastendruck warten
  221.  
  222. * READFILE()             Textdatei in Stem-Variable einlesen
  223. * WRITEFILE()            Stem-Variable als Textdatei speichern
  224.  
  225. * QSORT()                Liste mit QuickSort sortieren
  226. * BSEARCH()              String mit Binärsuche suchen
  227. * LSEARCH()              String mit Linearsuche suchen
  228.  
  229. * VIEWLIST()             Liste im Auswahlfenster anzeigen
  230.  
  231. * GETDEFAULTPUBSCREEN()  Default-Publicscreen ermitteln
  232. * SETDEFAULTPUBSCREEN()  Neuen Default-Publicscreen einstellen
  233.  
  234. * GETPUBSCREENMODES()    Publicscreen-Modi ermitteln
  235. * SETPUBSCREENMODES()    Neue Publicscreen-Modi einstellen
  236.  
  237. * PUBSCREENTOFRONT()     Publicscreen nach vorne bringen
  238. * PUBSCREENTOBACK()      Publicscreen nach hinten legen
  239.  
  240. * PUBSCREENLIST()        Liste aller Publicscreens erstellen
  241.  
  242. * BEEP()                 Bildschirm blitzen
  243.  
  244. * WHATIS()               Dateityp mit Hilfe der 'whatis.library' ermitteln
  245. * WHATISTYPES()          Alle Dateitypen der 'whatis.library' ermitteln
  246.  
  247. * CRC32()                32-Bit CRC Prüfsumme einer Datei berechnen
  248.  
  249. Die Funktion GETENV()
  250. *********************
  251.  
  252. NAME
  253.      inhalt = GETENV(variable)
  254.  
  255. BESCHREIBUNG
  256.      Ermittelt den Inhalt einer Environment-Variablen
  257.  
  258. ARGUMENTE
  259.      variable - Name der Variablen, deren Inhalt ermittelt werden soll
  260.  
  261. ERGEBNIS
  262.      inhalt   - Inhalt der Variablen
  263.  
  264. BEISPIEL
  265.      /* Ermitteln der Kickstart-Version */
  266.      
  267.      inhalt = GETENV('Kickstart')
  268.      SAY 'Kickstart-Version =' inhalt
  269.  
  270. SIEHE AUCH
  271.      SETENV(), UNSETENV()
  272.  
  273. Die Funktion SETENV()
  274. *********************
  275.  
  276. NAME
  277.      bool = SETENV(variable,text)
  278.  
  279. BESCHREIBUNG
  280.      Stellt den Inhalt einer Environment-Variablen ein, wenn die Variable
  281.      noch nicht existiert wird sie neu angelegt.
  282.  
  283. ARGUMENTE
  284.      variable - Name der Variablen, deren Inhalt eingestellt werden soll
  285.      text     - der neue Inhalt der Variablen
  286.  
  287. ERGEBNIS
  288.      bool     - 1 wenn alles geklappt hat, 0 im Fehlerfall
  289.  
  290. BEISPIEL
  291.      /* Einstellen der Editor-Variablen */
  292.      
  293.      IF SETENV('Editor','C:ED') THEN
  294.         SAY 'ED ist jetzt als Editor eingestellt!'
  295.      ELSE
  296.         SAY 'Fehler beim Einstellen des Editors!'
  297.  
  298. SIEHE AUCH
  299.      GETENV(), UNSETENV()
  300.  
  301. Die Funktion UNSETENV()
  302. ***********************
  303.  
  304. NAME
  305.      bool = UNSETENV(variable)
  306.  
  307. BESCHREIBUNG
  308.      Entfernt eine Environment-Variable aus dem System, die Variable wird
  309.      NICHT aus ENVARC: gelöscht.
  310.  
  311. ARGUMENTE
  312.      variable - Name der Variablen, die entfernt werden soll
  313.  
  314. ERGEBNIS
  315.      bool     - 1 wenn alles geklappt hat, 0 im Fehlerfall
  316.  
  317. BEISPIEL
  318.      /* Entfernen der Variablen 'Editor' */
  319.      
  320.      IF UNSETENV('Editor') THEN
  321.         SAY 'Die Variable Editor ist entfernt!'
  322.      ELSE
  323.         SAY 'Fehler beim Entfernen der Variablen Editor!'
  324.  
  325. SIEHE AUCH
  326.      GETENV(), SETENV()
  327.  
  328. Die Funktion PATHPART()
  329. ***********************
  330.  
  331. NAME
  332.      verzeichnis = PATHPART(pfadname)
  333.  
  334. BESCHREIBUNG
  335.      Ermittelt den Verzeichnis eines Pfadnamens
  336.  
  337. ARGUMENTE
  338.      pfadname    - ein kompletter Pfadname, der aus Verzeichnis- und
  339.                    Dateiname besteht
  340.  
  341. ERGEBNIS
  342.      verzeichnis - Das ermittelte Verzeichnis
  343.  
  344. BEISPIEL
  345.      /* Verzeichnis eines komplatten Pfades ermitteln */
  346.      
  347.      verzeichnis = PATHPART('DH0:Daten/Testfile')
  348.      SAY 'Verzeichnis =' verzeichnis
  349.  
  350. SIEHE AUCH
  351.      FILEPART(), MAKEPATH()
  352.  
  353. Die Funktion FILEPART()
  354. ***********************
  355.  
  356. NAME
  357.      dateiname = FILEPART(pfadname)
  358.  
  359. BESCHREIBUNG
  360.      Ermittelt den Dateiname eines Pfades
  361.  
  362. ARGUMENTE
  363.      pfadname    - ein kompletter Pfadname, der aus Verzeichnis-
  364.                    und Dateiname besteht
  365.  
  366. ERGEBNIS
  367.      dateiname   - Der ermittelte Dateiname
  368.  
  369. BEISPIEL
  370.      /* Dateiname aus einem komplatten Pfad ermitteln */
  371.      
  372.      dateiname = FILEPART('DH0:Daten/Testfile')
  373.      SAY 'Dateiname =' dateiname
  374.  
  375. SIEHE AUCH
  376.      PATHPART(), MAKEPATH()
  377.  
  378. Die Funktion MAKEPATH()
  379. ***********************
  380.  
  381. NAME
  382.      pfadname = MAKEPATH(verzeichnis,dateiname)
  383.  
  384. BESCHREIBUNG
  385.      Erstellt aus einem Verzeichnis und einem Dateinamen einen kompletten
  386.      Pfad
  387.  
  388. ARGUMENTE
  389.      verzeichnis - Verzeichnis, das in den Pfad eingebaut werden soll
  390.      dateiname   - Dateiname, der in den Pfad eingebaut werden soll
  391.  
  392. ERGEBNIS
  393.      pfadname    - ein kompletter Pfadname, der aus dem angegebenen
  394.                    Verzeichnis- und Dateinamen besteht
  395.  
  396. BEISPIEL
  397.      /* Pfad aus Verzeichnis und Dateiname zusammensetzen */
  398.      
  399.      pfadname = MAKEPATH('DH0:Daten','Testfile')
  400.      SAY 'Pfad =' pfadname
  401.  
  402. SIEHE AUCH
  403.      PATHPART(), FILEPART()
  404.  
  405. Die Funktion GETCOMMENT()
  406. *************************
  407.  
  408. NAME
  409.      kommentar = GETCOMMENT(dateiname)
  410.  
  411. BESCHREIBUNG
  412.      Ermittelt den Kommentar einer Datei
  413.  
  414. ARGUMENTE
  415.      dateiname - Datei, deren Kommentar ermittelt werden soll
  416.  
  417. ERGEBNIS
  418.      kommentar - der Kommentar der angegebenen Datei
  419.  
  420. BEISPIEL
  421.      /* Dateikommentar ermitteln */
  422.      
  423.      kommentar = GETCOMMENT('DH0:Daten/Testfile')
  424.      SAY 'Kommentar =' kommentar
  425.  
  426. SIEHE AUCH
  427.      SETCOMMENT()
  428.  
  429. Die Funktion SETCOMMENT()
  430. *************************
  431.  
  432. NAME
  433.      bool = SETCOMMENT(dateiname,kommentar)
  434.  
  435. BESCHREIBUNG
  436.      Stellt den Kommentar einer Datei ein
  437.  
  438. ARGUMENTE
  439.      dateiname - Datei, deren Kommentar eingestellt werden soll
  440.  
  441. ERGEBNIS
  442.      bool      - 1 wenn alles geklappt hat, 0 im Fehlerfall
  443.  
  444. BEISPIEL
  445.      /* Dateikommentar einstellen */
  446.      
  447.      IF SETCOMMENT('DH0:Daten/Testfile','Dies ist eine Testdatei') THEN
  448.         SAY 'Der Kommentar wurde eingestellt!'
  449.      ELSE
  450.         SAY 'Fehler beim Einstellen des Kommentars!'
  451.  
  452. SIEHE AUCH
  453.      GETCOMMENT()
  454.  
  455. Die Funktion GETPROTECTION()
  456. ****************************
  457.  
  458. NAME
  459.      schutzbits = GETPROTECTION(dateiname)
  460.  
  461. BESCHREIBUNG
  462.      Ermittelt die Schutzbits einer Datei
  463.  
  464. ARGUMENTE
  465.      dateiname  - Datei, deren Schutzbits ermittelt werden sollen
  466.  
  467. ERGEBNIS
  468.      schutzbits - String, der die ermittelten Schutzbits im bekannten
  469.                   Format 'HSPARWED' enthält. Ein gesetztes Bit wird
  470.                   durch den entsprechenden Buchstaben repräsentiert,
  471.                   ein gelöschtes Bit durch '-'.
  472.  
  473. BEISPIEL
  474.      /* Schutzbits einer Datei ermitteln */
  475.      
  476.      schutzbits = GETPROTECTION('DH0:Daten/Testfile')
  477.      SAY 'Schutzbits =' schutzbits
  478.  
  479. SIEHE AUCH
  480.      SETPROTECTION()
  481.  
  482. Die Funktion SETPROTECTION()
  483. ****************************
  484.  
  485. NAME
  486.      bool = SETPROTECTION(schutzbits)
  487.  
  488. BESCHREIBUNG
  489.      Stellt die Schutzbits einer Datei ein
  490.  
  491. ARGUMENTE
  492.      schutzbits - String, der die einzustellenden Schutzbits im
  493.                   bekannten Format 'HSPARWED' enthält. Ein gesetztes
  494.                   Bit wird durch den entsprechenden Buchstaben
  495.                   repräsentiert, ein gelöschtes Bit durch '-'.
  496.  
  497. ERGEBNIS
  498.      bool       - 1 wenn alles geklappt hat, 0 im Fehlerfall
  499.  
  500. BEISPIEL
  501.      /* Schutzbits einer Datei einstellen */
  502.      
  503.      IF SETPROTECTION('DH0:Daten/Testfile','-S-RWE-') THEN
  504.         SAY 'Die Schutzbits wurden eingestellt!'
  505.      ELSE
  506.         SAY 'Fehler beim Einstellen der Schutzbits!'
  507.  
  508. SIEHE AUCH
  509.      GETPROTECTION()
  510.  
  511. Die Funktion MATCHPATTERN()
  512. ***************************
  513.  
  514. NAME
  515.      bool = MATCHPATTERN(string,pattern,case)
  516.  
  517. BESCHREIBUNG
  518.      Vergleicht einen String mit einem AmigaDOS-Namensmuster
  519.  
  520. ARGUMENTE
  521.      string  - String der verglichen werden soll
  522.      
  523.      pattern - AmigaDOS-Namensmuster
  524.      
  525.      case    - Hier kann angegeben werden ob zwischen Groß- und
  526.                Kleinbuchstaben unterschieden werden soll, ist das
  527.                Argument nicht angegeben dann wird nicht unterschieden.
  528.      
  529.                Mögliche Angaben sind:
  530.      
  531.                'CASE'   oder 'C' - Groß- und Kleinbuchstaben werden
  532.                                    unterschieden
  533.                'NOCASE' oder 'N' - Groß- und Kleinbuchstaben werden
  534.                                    nicht unterschieden
  535.  
  536. ERGEBNIS
  537.      bool    - 1 wenn String und Muster übereinstimmen, 0 wenn nicht
  538.  
  539. BEISPIEL
  540.      /* String mit Namensmuster vergleichen */
  541.      
  542.      IF MATCHPATTERN('Testtext','t#?','CASE') THEN
  543.         SAY 'Übereinstimmung gefunden'
  544.      ELSE
  545.         SAY 'Keine Übereinstimmung'
  546.  
  547. SIEHE AUCH
  548.      -/-
  549.  
  550. Die Funktion GETKEY()
  551. *********************
  552.  
  553. NAME
  554.      key = GETKEY(timeout)
  555.  
  556. BESCHREIBUNG
  557.      Wartet die angegebene Zeit auf das Betätigen einer Taste
  558.  
  559. ARGUMENTE
  560.      timeout - Zeit in Sekunden
  561.  
  562. ERGEBNIS
  563.      key     - Wird innerhalb der angegebenen Zeit eine Taste gedrückt,
  564.                dann wird das entsprechende Zeichen zurückgegeben, nach
  565.                Ablauf der Zeit ohne Tastendruck wir -1 zurückgegeben.
  566.      
  567.                Die Sondertasten werden, wenn sie nicht mit einem Text
  568.                belegt sind, wie folgt zurückgegeben:
  569.  
  570.                     Taste          | allein  | mit SHIFT
  571.                     ---------------+---------+------------
  572.                     F1             | F1      | SHIFT F1
  573.                     F2             | F2      | SHIFT F2
  574.                     F3             | F3      | SHIFT F3
  575.                     F4             | F4      | SHIFT F4
  576.                     F5             | F5      | SHIFT F5
  577.                     F6             | F6      | SHIFT F6
  578.                     F7             | F7      | SHIFT F7
  579.                     F8             | F8      | SHIFT F8
  580.                     F9             | F9      | SHIFT F9
  581.                     F10            | F10     | SHIFT F10
  582.                                    |         |
  583.                     Esc            | ESC     | ESC
  584.                     Help           | HELP    | HELP
  585.                                    |         |
  586.                     Return         | CR      | CR
  587.                     Enter          | CR      | CR
  588.                                    |         |
  589.                     Backspace      | BS      | BS
  590.                     Delete         | DEL     | DEL
  591.                                    |         |
  592.                     Cursor Oben    | UP      | SHIFT UP
  593.                     Cursor Unten   | DOWN    | SHIFT DOWN
  594.                     Cursor Links   | LEFT    | SHIFT LEFT
  595.                     Cursor Rechts  | RIGHT   | SHIFT RIGHT
  596.      
  597.                Wenn eine der Tasten mit einem Text belegt ist,
  598.                z.B. mit Hilfe des Commodities 'FKey', dann wird
  599.                der entsprechende Text zurückgegeben.
  600.  
  601. BEISPIEL
  602.      /* Zehn Sekunden auf das Betätigen einer Taste warten */
  603.      
  604.      key = GETKEY(10)
  605.      
  606.      IF key ~= (-1) THEN
  607.         SAY 'Taste gedrückt:' key
  608.      ELSE
  609.         SAY 'Zeit ist abgelaufen, keine Taste wurde gedrückt!'
  610.  
  611. SIEHE AUCH
  612.      -/-
  613.  
  614. Die Funktion READFILE()
  615. ***********************
  616.  
  617. NAME
  618.      bool = READFILE(dateiname,stemvar)
  619.  
  620. BESCHREIBUNG
  621.      Liest den Inhalt einer Textdatei zeilenweise in eine Stem-Variable
  622.      ein. Zeilenvorschübe (ASCII-Code: 10) werden nicht gespeichert.
  623.  
  624. ARGUMENTE
  625.      dateiname  - Datei, deren Inhalt eingelesen werden soll
  626.      
  627.      stemvar    - Stem-Variable, in der die aus der Datei gelesenen Zeilen
  628.                   gespeichert werden sollen. Jedes Feld der Stem-Variablen
  629.                   enthält jeweils eine Zeile  der Datei:
  630.      
  631.                   stemvar.count - enthält die Anzahl der Zeilen
  632.                   stemvar.0     - enthält die erste Zeile
  633.                   stemvar.1     - enthält die zweite Zeile
  634.                   stemvar.n     - enthält die n-te Zeile
  635.  
  636. ERGEBNIS
  637.      bool       - 1 wenn alles geklappt hat, 0 im Fehlerfall
  638.  
  639. BEISPIEL
  640.      /* Datei 's:user-startup' in Stem-Variable einlesen und anzeigen */
  641.      
  642.      IF READFILE('s:user-startup','array') THEN DO
  643.         SAY 'Anzahl Zeilen:' array.count
  644.      
  645.         DO i = 0 TO array.count-1
  646.            SAY 'Zeile' i+1||':' array.i
  647.         END
  648.      END
  649.  
  650. SIEHE AUCH
  651.      WRITEFILE()
  652.  
  653. Die Funktion WRITEFILE()
  654. ************************
  655.  
  656. NAME
  657.      bool = WRITEFILE(dateiname,stemvar,append)
  658.  
  659. BESCHREIBUNG
  660.      Speichert den Inhalt einer Stem-Variablen als Textdatei, an jede Zeile
  661.      wird automatisch ein Zeilenvorschub angehängt.
  662.  
  663. ARGUMENTE
  664.      dateiname  - Datei, in der der Inhalt der Stem-Variablen gespeichert
  665.                   werden soll.
  666.      
  667.      stemvar    - Stem-Variable, die in der Datei gespeichert werden soll.
  668.                   Die Stem-Variable muß folgenden Inhalt haben:
  669.      
  670.                   stemvar.count - muß die Anzahl der Zeilen enthalten
  671.                   stemvar.0     - muß die erste Zeile enthalten
  672.                   stemvar.1     - muß die zweite Zeile enthalten
  673.                   stemvar.n     - muß die n-te Zeile enthalten
  674.      
  675.      append     - Gibt an, daß die Zeilen an eine bereits existierende
  676.                   Datei angehängt werden sollen. Wenn die angegebene
  677.                   Datei nicht existiert wird ein Fehler zurückgegeben.
  678.      
  679.                   Mögliche Angaben sind:
  680.      
  681.                   'APPEND' oder 'A' - Die Zeilen werden angehängt
  682.      
  683.                   Alle anderen Angaben bewirken nichts.
  684.  
  685. ERGEBNIS
  686.      bool       - 1 wenn alles geklappt hat, 0 im Fehlerfall
  687.  
  688. BEISPIEL
  689.      /* Stem-Variable in Datei schreiben */
  690.      
  691.      liste.count = 4
  692.      liste.0     = 'Hallo'
  693.      liste.1     = 'Moin'
  694.      liste.2     = 'Tach'
  695.      liste.3     = 'Mahlzeit'
  696.      
  697.      IF WRITEFILE('RAM:Test','liste') THEN
  698.         SAY 'Fertig, keine Fehler!'
  699.  
  700. SIEHE AUCH
  701.      READFILE()
  702.  
  703. Die Funktion QSORT()
  704. ********************
  705.  
  706. NAME
  707.      bool = QSORT(liste,destvar,case)
  708.  
  709. BESCHREIBUNG
  710.      Sortiert eine in einer Stem-Variablen gespeicherte Liste aufsteigend
  711.  
  712. ARGUMENTE
  713.      liste   - Die Liste, die sortiert werden soll. Dies muß eine
  714.                Stem-Variable mit folgendem Inhalt sein:
  715.      
  716.                liste.count - muß die Anzahl der Elemente enthalten
  717.                liste.0     - muß das erste Element enthalten
  718.                liste.1     - muß das zweite Element enthalten
  719.                liste.n     - muß das n-te Element enthalten
  720.      
  721.      destvar - Stem-Variable, in der die sortierte Liste gespeichert
  722.                werden soll. Die fertig sortierte Liste wird in dieser
  723.                Variablen genauso gespeichert wie in der übergebenen
  724.                Liste:
  725.      
  726.                destvar.count - enthält die Anzahl der Elemente
  727.                destvar.0     - enthält das erste Element
  728.                destvar.1     - enthält das zweite Element
  729.                destvar.n     - enthält das n-te Element
  730.      
  731.                Die Angabe dieser Variablen ist optional, wenn nichts
  732.                angegeben ist wird die liste direkt sortiert.
  733.      
  734.      case    - Gibt an ob bei der Sortierung zwischen Groß- und
  735.                Kleinbuchstaben unterschieden werden soll, ist
  736.                hier nichts angegeben dann wird nicht unterschieden.
  737.      
  738.                Mögliche Angaben sind:
  739.      
  740.                'CASE'   oder 'C' - Groß- und Kleinbuchstaben werden
  741.                                    unterschieden
  742.                'NOCASE' oder 'N' - Groß- und Kleinbuchstaben werden
  743.                                    nicht unterschieden
  744.  
  745. ERGEBNIS
  746.      bool    - 1 wenn die Liste korrekt sortiert werden konnte
  747.                0 wenn beim Sortieren ein Fehler aufgetreten ist
  748.  
  749. BEISPIEL
  750.      /* Liste nach 'destvar' sortieren */
  751.      
  752.      liste.count = 4
  753.      liste.0     = 'Hallo'
  754.      liste.1     = 'Moin'
  755.      liste.2     = 'Tach'
  756.      liste.3     = 'Mahlzeit'
  757.      
  758.      IF QSORT('liste','destvar') THEN DO
  759.         SAY 'Anzahl Elemente:' destvar.count
  760.      
  761.         DO i = 0 TO destvar.count-1
  762.            SAY destvar.i
  763.         END
  764.      END
  765.      
  766.      /* Und jetzt die Liste auch direkt sortieren */
  767.      
  768.      IF QSORT('liste') THEN DO
  769.         DO i = 0 TO liste.count-1
  770.            SAY liste.i
  771.         END
  772.      END
  773.  
  774. SIEHE AUCH
  775.      BSEARCH(), LSEARCH()
  776.  
  777. Die Funktion BSEARCH()
  778. **********************
  779.  
  780. NAME
  781.      nummer = BSEARCH(key,liste,case)
  782.  
  783. BESCHREIBUNG
  784.      Sucht in einer Liste mit dem Binärverfahren nach einen bestimmten
  785.      Element, die Liste muß aufsteigend sortiert sein!!!
  786.  
  787. ARGUMENTE
  788.      key     - das Element, nach dem gesucht werden soll
  789.      
  790.      liste   - Die Liste, in der gesucht werden soll. Dies muß eine
  791.                Stem-Variable mit folgendem Inhalt sein:
  792.      
  793.                liste.count - muß die Anzahl der Elemente enthalten
  794.                liste.0     - muß das erste Element enthalten
  795.                liste.1     - muß das zweite Element enthalten
  796.                liste.n     - muß das n-te Element enthalten
  797.      
  798.      case    - Gibt an ob bei der Suche zwischen Groß- und Klein-
  799.                buchstaben unterschieden werden soll, ist hier nichts
  800.                angegeben dann wird nicht unterschieden.
  801.      
  802.                Mögliche Angaben sind:
  803.      
  804.                'CASE'   oder 'C' - Groß- und Kleinbuchstaben werden
  805.                                    unterschieden
  806.                'NOCASE' oder 'N' - Groß- und Kleinbuchstaben werden
  807.                                    nicht unterschieden
  808.  
  809. ERGEBNIS
  810.      nummer  - die Nummer des gesuchten Elements in der Liste oder -1 wenn
  811.                das Element nicht gefunden wurde
  812.  
  813. BEISPIEL
  814.      /* Element in einer Liste mit dem Binärverfahren suchen */
  815.      
  816.      liste.count = 4
  817.      liste.0     = 'Hallo'
  818.      liste.1     = 'Mahlzeit'
  819.      liste.2     = 'Moin'
  820.      liste.3     = 'Tach'
  821.      
  822.      nummer = BSEARCH('Moin','liste','CASE')
  823.      
  824.      IF nummer ~= (-1) THEN
  825.         SAY 'Moin ist Element Nr:' nummer
  826.      ELSE
  827.         SAY 'Element nicht gefunden'
  828.  
  829. SIEHE AUCH
  830.      QSORT(), LSEARCH()
  831.  
  832. Die Funktion LSEARCH()
  833. **********************
  834.  
  835. NAME
  836.      nummer = LSEARCH(key,liste,start,case)
  837.  
  838. BESCHREIBUNG
  839.      Sucht ab dem angegebenen Startelement linear in einer Liste nach
  840.      dem ersten Auftreten eines bestimmten Elements, die Liste muß nicht
  841.      sortiert sein!!!
  842.  
  843. ARGUMENTE
  844.      key     - das Element, nach dem gesucht werden soll
  845.      
  846.      liste   - Die Liste, in der gesucht werden soll. Dies muß eine
  847.                Stem-Variable mit folgendem Inhalt sein:
  848.      
  849.                liste.count - muß die Anzahl der Elemente enthalten
  850.                liste.0     - muß das erste Element enthalten
  851.                liste.1     - muß das zweite Element enthalten
  852.                liste.n     - muß das n-te Element enthalten
  853.      
  854.      start   - Die Nummer des Elements bei dem mit der Suche begonnen
  855.                werden soll. Dieses Argument ist optional, wenn nichts
  856.                angegeben ist wird bei Element 0 mit der Suche begonnen.
  857.      
  858.      case    - Gibt an ob bei der Suche zwischen Groß- und Klein-
  859.                buchstaben unterschieden werden soll, ist hier nichts
  860.                angegeben dann wird nicht unterschieden.
  861.      
  862.                Mögliche Angaben sind:
  863.      
  864.                'CASE'   oder 'C' - Groß- und Kleinbuchstaben werden
  865.                                    unterschieden
  866.                'NOCASE' oder 'N' - Groß- und Kleinbuchstaben werden
  867.                                    nicht unterschieden
  868.  
  869. ERGEBNIS
  870.      nummer  - die Nummer des nächsten gesuchten Elements in der Liste
  871.                oder -1 wenn kein passendes Element mehr gefunden wurde
  872.  
  873. BEISPIEL
  874.      /* Element in einer Liste suchen */
  875.      
  876.      liste.count = 4
  877.      liste.0     = 'Hallo'
  878.      liste.1     = 'Moin'
  879.      liste.2     = 'Tach'
  880.      liste.3     = 'Mahlzeit'
  881.      
  882.      nummer = LSEARCH('tach','liste')
  883.      
  884.      IF nummer ~= (-1) THEN
  885.         SAY 'Tach ist Element Nr:' nummer
  886.      ELSE
  887.         SAY 'Element nicht gefunden'
  888.  
  889. SIEHE AUCH
  890.      QSORT(), BSEARCH()
  891.  
  892. Die Funktion VIEWLIST()
  893. ***********************
  894.  
  895. NAME
  896.      bool = VIEWLIST(liste,fenster,destvar)
  897.  
  898. BESCHREIBUNG
  899.      Stellt eine Liste von in einem ListView-Fenster dar und gestattet
  900.      die komfortable Auswahl eines oder mehrerer Elemente.
  901.  
  902. ARGUMENTE
  903.      liste   - Die Liste, die im Fenster dargestellt werden soll. Dies
  904.                muß eine Stem-Variable mit folgendem Inhalt sein:
  905.      
  906.                liste.count - muß die Anzahl der Elemente enthalten
  907.                liste.0     - muß das erste Element enthalten
  908.                liste.1     - muß das zweite Element enthalten
  909.                liste.n     - muß das n-te Element enthalten
  910.      
  911.      fenster - Stem-Variable, die einige Definitionen für das zu verwendende
  912.                Fenster enthält. Für nicht angegebene Definitionen werden
  913.                Standardwerte verwendet:
  914.      
  915.                fenster.title     - der Titel des Fensters
  916.                                    Standardwert: RexxTricks-ListView
  917.      
  918.                fenster.postext   - der Text des 'Okay'-Gadgets
  919.                                    Standardwert: Okay
  920.      
  921.                fenster.negtext   - der Text des 'Abbruch'-Gadgets
  922.                                    Standardwert: Abbruch
  923.      
  924.                fenster.pubscreen - der Publicscreen, auf dem das Fenster
  925.                                    geöffnet werden soll
  926.                                    Standardwert: Default-Publicscreen
  927.      
  928.                fenster.font      - der Font, der verwendet werden soll
  929.                                    DEFAULT     : der Standard-Systemfont
  930.                                    SCREEN      : der Font des Screens
  931.                                    Standardwert: Standard-Systemfont
  932.      
  933.                fenster.width     - die Breite des Fensters, wenn nichts
  934.                                    angegeben wird verwendet das Fenster
  935.                                    die halbe Bildschirmbreite
  936.      
  937.                fenster.sort      - gibt an ob die Liste sortiert werden soll
  938.                                    TRUE        : sortieren
  939.                                    FALSE       : nicht sortieren
  940.                                    Standardwert: sortieren
  941.      
  942.      destvar - Stem-Variable, in der die ausgewählten Elemente gespeichert
  943.                werden sollen. Die ausgewählten Elemente werden in dieser
  944.                Variablen genauso gespeichert wie die übergebene Liste:
  945.      
  946.                destvar.count - enthält die Anzahl der ausgewählten Elemente
  947.                destvar.0     - enthält das erste ausgewählte Element
  948.                destvar.1     - enthält das zweite ausgewählte Element
  949.                destvar.n     - enthält das n-te ausgewählte Element
  950.  
  951. ERGEBNIS
  952.      bool    - 1 wenn mindestens ein Element ausgewählt wurde
  953.                0 im Fehlerfall oder wenn kein Element ausgewählt wurde
  954.  
  955. BEISPIEL
  956.      /* ListView aufrufen und Auswahl auswerten */
  957.      
  958.      liste.count = 4
  959.      liste.0     = 'Hallo'
  960.      liste.1     = 'Moin'
  961.      liste.2     = 'Tach'
  962.      liste.3     = 'Mahlzeit'
  963.      
  964.      fenster.title     = 'Bitte wählen'
  965.      fenster.postext   = '_Jawoll'
  966.      fenster.negtext   = 'Lieber _nicht'
  967.      fenster.pubscreen = 'MICRODOT'
  968.      fenster.font      = 'SCREEN'
  969.      fenster.sort      = 'TRUE'
  970.      
  971.      IF VIEWLIST('liste','fenster','destvar') THEN DO
  972.         SAY 'Anzahl ausgewählt:' destvar.count
  973.      
  974.         DO i = 0 TO destvar.count-1
  975.            SAY destvar.i
  976.         END
  977.      END
  978.  
  979. SIEHE AUCH
  980.      Das VIEWLIST() Fenster
  981.  
  982. Die Funktion BEEP()
  983. *******************
  984.  
  985. NAME
  986.      dummy = BEEP()
  987.  
  988. BESCHREIBUNG
  989.      Läßt alle Bilschirme aufblitzen
  990.  
  991. ARGUMENTE
  992.      -/-
  993.  
  994. ERGEBNIS
  995.      dummy - ist immer 1
  996.  
  997. BEISPIEL
  998.      /* Bildschirmblitz */
  999.      
  1000.      dummy = BEEP()
  1001.  
  1002. SIEHE AUCH
  1003.      -/-
  1004.  
  1005. Die Funktion GETDEFAULTPUBSCREEN()
  1006. **********************************
  1007.  
  1008. NAME
  1009.      screen = GETDEFAULTPUBSCREEN()
  1010.  
  1011. BESCHREIBUNG
  1012.      Ermittelt den Namen des Default-Publicscreen
  1013.  
  1014. ARGUMENTE
  1015.      -/-
  1016.  
  1017. ERGEBNIS
  1018.      screen - Der Name des Default-Publicscreen
  1019.  
  1020. BEISPIEL
  1021.      /* Namen des Default-Publicscreen ermitteln */
  1022.      
  1023.      screen = GETDEFAULTPUBSCREEN()
  1024.      SAY 'Default-Publicscreen ist:' screen
  1025.  
  1026. SIEHE AUCH
  1027.      SETDEFAULTPUBSCREEN(), PUBSCREENLIST()
  1028.  
  1029. Die Funktion SETDEFAULTPUBSCREEN()
  1030. **********************************
  1031.  
  1032. NAME
  1033.      oldscreen = SETDEFAULTPUBSCREEN(newscreen)
  1034.  
  1035. BESCHREIBUNG
  1036.      Stellt den angegebenen Screen als neuen Default-Publicscreen ein.  Die
  1037.      Funktion liefert den Namen des bisherigen Default-Publicscreen zurück.
  1038.  
  1039. ARGUMENTE
  1040.      newscreen - Der Name des Screens der als Default-Publicscreen
  1041.                  eingestellt werden soll. Wenn dieses Argument nicht
  1042.                  angegeben ist, dann wird der Workbench-Screen als
  1043.                  Default-Publicscreen eingestellt.
  1044.  
  1045. ERGEBNIS
  1046.      oldscreen - Der Name des bisherigen Default-Publicscreen
  1047.  
  1048. BEISPIEL
  1049.      /* Den CED-Screen als Default-Publicscreen einstellen */
  1050.      
  1051.      oldscreen = SETDEFAULTPUBSCREEN('CygnusEdScreen1')
  1052.      SAY 'Bisheriger Default-Publicscreen war:' oldscreen
  1053.  
  1054. SIEHE AUCH
  1055.      GETDEFAULTPUBSCREEN(), PUBSCREENLIST()
  1056.  
  1057. Die Funktion GETPUBSCREENMODES()
  1058. ********************************
  1059.  
  1060. NAME
  1061.      publicmodes = GETPUBSCREENMODES()
  1062.  
  1063. BESCHREIBUNG
  1064.      Ermittelt die eingestellten Publicscreen-Modi
  1065.  
  1066. ARGUMENTE
  1067.      -/-
  1068.  
  1069. ERGEBNIS
  1070.      publicmodes - Ein 2 Zeichen langer String der die Publicscreen-Modi
  1071.                    enthält. Das erste Zeichen stellt den SHANGHAI-Modus
  1072.                    dar, das zweite Zeichen den POPPUBSCREEN-Modus.
  1073.      
  1074.                    Bei eingeschaltetem SHANGHAI-Modus werden alle
  1075.                    Workbench-Fenster auf dem Default-Publicscreen geöffnet.
  1076.      
  1077.                    Bei eingeschaltetem POPPUBSCREEN-Modus wird beim
  1078.                    Öffnen eines Fensters der entsprechende PublicScreen in
  1079.                    den Vordergrund gebracht.
  1080.      
  1081.                    -- SHANGHAI und POPPUBSCREEN ausgeschaltet
  1082.      
  1083.                    S- SHANGHAI eingeschaltet
  1084.      
  1085.                    -P POPPUBSCREEN eingeschaltet
  1086.      
  1087.                    SP SHANGHAI und POPPUBSCREEN eingeschaltet
  1088.  
  1089. BEISPIEL
  1090.      /* Publicscreen-Modi ermitteln */
  1091.      
  1092.      publicmodes = GETPUBSCREENMODES()
  1093.      SAY 'Publicscreen-Modi:' publicmodes
  1094.  
  1095. SIEHE AUCH
  1096.      SETPUBSCREENMODES()
  1097.  
  1098. Die Funktion SETPUBSCREENMODES()
  1099. ********************************
  1100.  
  1101. NAME
  1102.      oldmodes = SETPUBSCREENMODES(publicmodes)
  1103.  
  1104. BESCHREIBUNG
  1105.      Stellt neue Publicscreen-Modi ein
  1106.  
  1107. ARGUMENTE
  1108.      publicmodes - Ein 2 Zeichen langer String der die Publicscreen-Modi
  1109.                    enthält. Das erste Zeichen stellt den SHANGHAI-Modus
  1110.                    dar, das zweite Zeichen den POPPUBSCREEN-Modus.
  1111.      
  1112.                    Bei eingeschaltetem SHANGHAI-Modus werden alle
  1113.                    Workbench-Fenster auf dem Default-Publicscreen geöffnet.
  1114.      
  1115.                    Bei eingeschaltetem POPPUBSCREEN-Modus wird beim
  1116.                    Öffnen eines Fensters der entsprechende PublicScreen in
  1117.                    den Vordergrund gebracht.
  1118.      
  1119.                    -- SHANGHAI und POPPUBSCREEN werden ausgeschaltet
  1120.      
  1121.                    S- SHANGHAI wird eingeschaltet
  1122.      
  1123.                    -P POPPUBSCREEN wird eingeschaltet
  1124.      
  1125.                    SP SHANGHAI und POPPUBSCREEN werden eingeschaltet
  1126.  
  1127. ERGEBNIS
  1128.      oldmodes    - Die vorher eingestellten Publicscreen-Modi im oben
  1129.                    beschriebenen Format.
  1130.  
  1131. BEISPIEL
  1132.      /* SHANGHAI-Modus einschalten, POPPUBSCREEN-Modus ausschalten */
  1133.      
  1134.      oldmodes = SETPUBSCREENMODES('S-')
  1135.      SAY 'Vorher eingestellte Publicscreen-Modi:' oldmodes
  1136.  
  1137. SIEHE AUCH
  1138.      GETPUBSCREENMODES()
  1139.  
  1140. Die Funktion PUBSCREENTOFRONT()
  1141. *******************************
  1142.  
  1143. NAME
  1144.      bool = PUBSCREENTOFRONT(screen)
  1145.  
  1146. BESCHREIBUNG
  1147.      Bringt den angegebenen Publicscreen nach vorne vor alle anderen Screens
  1148.  
  1149. ARGUMENTE
  1150.      screen - Der Name des Publicscreen, der nach vorne gebracht werden
  1151.               soll
  1152.  
  1153. ERGEBNIS
  1154.      bool    - 1 wenn alles geklappt hat
  1155.                0 wenn der Screen nicht nach vorne gebracht werden konnte
  1156.  
  1157. BEISPIEL
  1158.      /* CED-Screen nach vorne bringen */
  1159.      
  1160.      IF PUBSCREENTOFRONT('CygnusEdScreen1') THEN
  1161.         SAY 'Der CED-Screen ist jetzt vorne!'
  1162.      ELSE
  1163.         SAY 'Der Screen konnte nicht nach vorne gebracht werden!'
  1164.  
  1165. SIEHE AUCH
  1166.      PUBSCREENTOBACK()
  1167.  
  1168. Die Funktion PUBSCREENTOBACK()
  1169. ******************************
  1170.  
  1171. NAME
  1172.      bool = PUBSCREENTOBACK(screen)
  1173.  
  1174. BESCHREIBUNG
  1175.      Legt den angegebenen Publicscreen hinter alle anderen Screens
  1176.  
  1177. ARGUMENTE
  1178.      screen - Der Name des Publicscreen, der nach hinten gelegt werden soll
  1179.  
  1180. ERGEBNIS
  1181.      bool    - 1 wenn alles geklappt hat
  1182.                0 wenn der Screen nicht nach hinten gelegt werden konnte
  1183.  
  1184. BEISPIEL
  1185.      /* Workbench-Screen nach hinten legen */
  1186.      
  1187.      IF PUBSCREENTOBACK('Workbench') THEN
  1188.         SAY 'Der Workbench-Screen ist jetzt ganz hinten!'
  1189.      ELSE
  1190.         SAY 'Der Workbench-Screen konnte nicht nach hinten gelegt werden!'
  1191.  
  1192. SIEHE AUCH
  1193.      PUBSCREENTOFRONT()
  1194.  
  1195. Die Funktion PUBSCREENLIST()
  1196. ****************************
  1197.  
  1198. NAME
  1199.      bool = PUBSCREENLIST(destvar)
  1200.  
  1201. BESCHREIBUNG
  1202.      Erstellt eine Liste der im System vorhandenen Publicscreens
  1203.  
  1204. ARGUMENTE
  1205.      destvar - Stem-Variable, in der die Namen der Screens gespeichert
  1206.                werden sollen. Die Namen werden wie folgt gespeichert:
  1207.      
  1208.                destvar.count - enthält die Anzahl der Publicscreens
  1209.                destvar.0     - enthält den Namen des ersten Screens
  1210.                destvar.1     - enthält den Namen des zweiten Screens
  1211.                destvar.n     - enthält den Namen des n-ten Screens
  1212.  
  1213. ERGEBNIS
  1214.      bool    - 1 wenn alles geklappt hat
  1215.                0 wenn ein Fehler aufgetreten ist
  1216.  
  1217. BEISPIEL
  1218.      /* Namen aller Publicscreens anzeigen */
  1219.      
  1220.      IF PUBSCREENLIST('screenliste') THEN DO
  1221.         SAY 'Anzahl Publicscreens:' screenliste.count
  1222.         DO i = 0 TO screenliste.count-1
  1223.            SAY screenliste.i
  1224.         END
  1225.      END
  1226.  
  1227. SIEHE AUCH
  1228.      GETDEFAULTPUBSCREEN(), SETDEFAULTPUBSCREEN()
  1229.  
  1230. Die Funktion WHATIS()
  1231. *********************
  1232.  
  1233. NAME
  1234.      typ = WHATIS(dateiname)
  1235.  
  1236. BESCHREIBUNG
  1237.      Ermittelt mit Hilfe der 'whatis.library' den Typ einer Datei.
  1238.  
  1239. ARGUMENTE
  1240.      dateiname - Die Datei, deren Typ ermittelt werden soll
  1241.  
  1242. ERGEBNIS
  1243.      typ       - Der ermittelte Dateityp. Eine Liste aller möglichen
  1244.                  Dateitypen bekommt man mit der Funktion WHATISTYPES()
  1245.  
  1246. BEISPIEL
  1247.      /* Typ der Datei 'S:User-Startup' ermitteln */
  1248.      
  1249.      typ = WHATIS('S:User-Startup')
  1250.      SAY 'S:User-Startup ist vom Typ:' typ
  1251.  
  1252. SIEHE AUCH
  1253.      WHATISTYPES()
  1254.  
  1255. Die Funktion WHATISTYPES()
  1256. **************************
  1257.  
  1258. NAME
  1259.      bool = WHATISTYPES(destvar)
  1260.  
  1261. BESCHREIBUNG
  1262.      Ermittelt alle der 'whatis.library' bekannten Dateitypen und speichert
  1263.      die Kennungen der gefundenen Typen in einer Stem-Variablen ab.
  1264.  
  1265. ARGUMENTE
  1266.      destvar - Stem-Variable, in der die Dateitypen gespeichert werden
  1267.                sollen. Die Dateitypen werden wie folgt gespeichert:
  1268.      
  1269.                destvar.count - enthält die Anzahl der Dateitypen
  1270.                destvar.0     - enthält die Kennung des ersten Typs
  1271.                destvar.1     - enthält die Kennung des zweiten Typs
  1272.                destvar.n     - enthält die Kennung des n-ten Typs
  1273.  
  1274. ERGEBNIS
  1275.      bool    - 1 wenn alles geklappt hat
  1276.                0 wenn ein Fehler aufgetreten ist
  1277.  
  1278. BEISPIEL
  1279.      /* Alle Dateitypen der 'whatis.library' anzeigen */
  1280.      
  1281.      IF WHATISTYPES('destvar') THEN DO
  1282.         SAY 'Anzahl bekannter Dateitypen:' destvar.count
  1283.         DO i = 0 TO destvar.count-1
  1284.            SAY destvar.i
  1285.         END
  1286.      END
  1287.  
  1288. SIEHE AUCH
  1289.      WHATIS()
  1290.  
  1291. Die Funktion CRC32()
  1292. ********************
  1293.  
  1294. NAME
  1295.      crc = CRC32(dateiname,verbose)
  1296.  
  1297. BESCHREIBUNG
  1298.      Berechnet die 32-Bit CRC Prüfsumme einer Datei.
  1299.  
  1300. ARGUMENTE
  1301.      dateiname - Die Datei, deren Prüfsumme berechnet werden soll
  1302.  
  1303.      verbose   - 'VERBOSE' oder 'V' zum Einschalten der Option
  1304.  
  1305. ERGEBNIS
  1306.      crc       - Das Ergebnis hängt davon ab, ob das Argument 'verbose'
  1307.                  angegeben ist. Wenn es nicht angegeben ist liefert die
  1308.                  Funktion das Komplement der errechneten Prüfsumme in
  1309.                  hexadezimaler Schreibweise. Ist 'verbose' angegeben, dann
  1310.                  steht in crc ein Text der aus vier Worten besteht:
  1311.      
  1312.                  1. Wort - Prüfsumme hexadezimal
  1313.                  2. Wort - Prüfsumme dezimal
  1314.                  3. Wort - Komplement der Prüfsumme hexadezimal
  1315.                  4. Wort - Komplement der Prüfsumme dezimal
  1316.  
  1317. BEISPIEL
  1318.      /* Prüfsumme der Datei 'S:User-Startup' berechnen */
  1319.      
  1320.      crc = CRC32('S:User-Startup')
  1321.      SAY 'Prüfsumme =' crc
  1322.  
  1323. SIEHE AUCH
  1324.      -/-
  1325.  
  1326. Bedienung des Auswahlfensters
  1327. *****************************
  1328.  
  1329. Darstellung von Einträgen im Fenster:
  1330.      Normaler Eintrag   - wird in der Screen-Textfarbe ohne Hintergrund
  1331.                           dargestellt
  1332.      
  1333.      Markierter Eintrag - wird in den gleichen Farben wie der Text im
  1334.                           Fensterrahmen dargestellt
  1335.      
  1336.      Aktueller Eintrag  - wird durch einen Rahmen dargestellt
  1337.  
  1338. Gadgets:
  1339.      Scroller      - bestimmt den Ausschnitt der Liste, der angezeigt
  1340.                      werden soll
  1341.      
  1342.      Alle          - markiert alle Einträge
  1343.      
  1344.      Keine         - hebt alle bisherigen Markierungen wieder auf
  1345.      
  1346.      Suchen        - sucht ab dem aktuellen Eintrag nach dem im
  1347.                      Eingabefeld eingegebenen Muster
  1348.      
  1349.      Eingabefeld   - der Text nach dem gesucht werden soll, die AmigaDOS-
  1350.                      Namensmuster werden vollständig unterstützt
  1351.      
  1352.      Okay          - schließt das Fenster und Übergibt die Inhalte aller
  1353.                      markierten Eintäge an das aufrufende ARexx-Script
  1354.      
  1355.      Abbrechen     - schließt das Fenster ohne Übergabe von Ergebnissen
  1356.      
  1357.      Schließsymbol - schließt das Fenster ohne Übergabe von Ergebnissen
  1358.  
  1359. Maustasten:
  1360.      Linke Maustaste       - markiert einen Eintrag und demarkiert
  1361.                              gleichzeitig alle anderen
  1362.      
  1363.      Shift-Linke Maustaste - markiert einen Eintrag, ist der angeklickte
  1364.                              Eintrag bereits markiert wird er demarkiert
  1365.  
  1366. Tastatur:
  1367.      Cursortasten       - bewegen den aktuellen Eintrag um einen Eintrag nach
  1368.                           oben oder unten, bei Bedarf wird die Liste gescrollt
  1369.      
  1370.      Shift-Cursortasten - bewegen den aktuellen Eintrag um eine Seite nach
  1371.                           oben oder unten, bei Bedarf wird die Liste gescrollt
  1372.      
  1373.      Ctrl-Cursortasten  - bewegen den aktuellen Eintrag an den Anfang oder das
  1374.                           Ende der Lsite, bei Bedarf wird die Liste gescrollt
  1375.      
  1376.      Return, Enter      - markiert den aktuellen Eintrag, Mehrfachmarkierung
  1377.                           ist möglich
  1378.      
  1379.      Leertaste          - markiert den aktuellen Eintrag, Mehrfachmarkierung
  1380.                           ist möglich
  1381.      
  1382.      <Alle-Taste>       - markiert alle Einträge
  1383.      
  1384.      <Keine-Taste>      - hebt alle bisherigen Markierungen wieder auf
  1385.      
  1386.      <Suchen-Taste>     - sucht ab dem aktuellen Eintrag nach dem im
  1387.                           Eingabefeld eingegebenen Muster
  1388.      
  1389.      Tab                - Aktiviert das Eingabefeld
  1390.      
  1391.      <Benutzen-Taste>   - schließt das Fenster und Übergibt die Inhalte aller
  1392.                           markierten Eintäge an das aufrufende ARexx-Script
  1393.      
  1394.      <Abbrechen-Taste>  - schließt das Fenster ohne Übergabe von Ergebnissen
  1395.      
  1396.      Esc                - schließt das Fenster ohne Übergabe von Ergebnissen
  1397.  
  1398. Index und Stichwortverzeichnis
  1399. ******************************
  1400.  
  1401.  
  1402.  
  1403.  Adresse des Autors                     Adresse des Autors
  1404.  Auf einen Tastendruck warten           GETKEY()
  1405.  Auswahlfenster                         Das VIEWLIST() Fenster
  1406.  Autor                                  Adresse des Autors
  1407.  Bedienung des Auswahlfensters          Das VIEWLIST() Fenster
  1408.  BEEP()                                 BEEP()
  1409.  Bildschirm blitzen                     BEEP()
  1410.  BSEARCH()                              BSEARCH()
  1411.  Copyright                              Copyright
  1412.  CRC32()                                CRC32()
  1413.  CRC32()                                CRC32()
  1414.  Das VIEWLIST() Fenster                 Das VIEWLIST() Fenster
  1415.  Dateikommentar auslesen                GETCOMMENT()
  1416.  Dateikommentar einstellen              SETCOMMENT()
  1417.  Dateiname eines Pfades ermitteln       FILEPART()
  1418.  Entstehungsgeschichte                  History
  1419.  Environment-Variable auslesen          GETENV()
  1420.  Environment-Variable einstellen        SETENV()
  1421.  Environment-Variable löschen          UNSETENV()
  1422.  FILEPART()                             FILEPART()
  1423.  Funktion BEEP()                        BEEP()
  1424.  Funktion BSEARCH()                     BSEARCH()
  1425.  Funktion CRC32()                       CRC32()
  1426.  Funktion FILEPART()                    FILEPART()
  1427.  Funktion GETCOMMENT()                  GETCOMMENT()
  1428.  Funktion GETDEFAULTPUBSCREEN()         GETDEFAULTPUBSCREEN()
  1429.  Funktion GETENV()                      GETENV()
  1430.  Funktion GETKEY()                      GETKEY()
  1431.  Funktion GETPROTECTION()               GETPROTECTION()
  1432.  Funktion GETPUBSCREENMODES()           GETPUBSCREENMODES()
  1433.  Funktion LSEARCH()                     LSEARCH()
  1434.  Funktion MAKEPATH()                    MAKEPATH()
  1435.  Funktion MATCHPATTERN()                MATCHPATTERN()
  1436.  Funktion PATHPART()                    PATHPART()
  1437.  Funktion PUBSCREENLIST()               PUBSCREENLIST()
  1438.  Funktion PUBSCREENTOBACK()             PUBSCREENTOBACK()
  1439.  Funktion PUBSCREENTOFRONT()            PUBSCREENTOFRONT()
  1440.  Funktion QSORT()                       QSORT()
  1441.  Funktion READFILE()                    READFILE()
  1442.  Funktion SETCOMMENT()                  SETCOMMENT()
  1443.  Funktion SETDEFAULTPUBSCREEN()         SETDEFAULTPUBSCREEN()
  1444.  Funktion SETENV()                      SETENV()
  1445.  Funktion SETPROTECTION()               SETPROTECTION()
  1446.  Funktion SETPUBSCREENMODES()           SETPUBSCREENMODES()
  1447.  Funktion UNSETENV()                    UNSETENV()
  1448.  Funktion VIEWLIST()                    VIEWLIST()
  1449.  Funktion WHATIS()                      WHATIS()
  1450.  Funktion WHATISTYPES()                 WHATISTYPES()
  1451.  Funktion WRITEFILE()                   WRITEFILE()
  1452.  Funktionen der Library                 Funktionen der Library
  1453.  Funktionsübersicht                    Funktionen der Library
  1454.  GETCOMMENT()                           GETCOMMENT()
  1455.  GETDEFAULTPUBSCREEN()                  GETDEFAULTPUBSCREEN()
  1456.  GETDEFAULTPUBSCREEN()                  GETDEFAULTPUBSCREEN()
  1457.  GETENV()                               GETENV()
  1458.  GETKEY()                               GETKEY()
  1459.  GETPROTECTION()                        GETPROTECTION()
  1460.  GETPUBSCREENMODES()                    GETPUBSCREENMODES()
  1461.  GETPUBSCREENMODES()                    GETPUBSCREENMODES()
  1462.  History                                History
  1463.  Index                                  Index
  1464.  Installation                           Installation
  1465.  Liste im Auswahlfenster anzeigen       VIEWLIST()
  1466.  Liste mit QuickSort sortieren          QSORT()
  1467.  LSEARCH()                              LSEARCH()
  1468.  MAKEPATH()                             MAKEPATH()
  1469.  MATCHPATTERN()                         MATCHPATTERN()
  1470.  PATHPART()                             PATHPART()
  1471.  Pfad zusammensetzen                    MAKEPATH()
  1472.  PUBSCREENLIST()                        PUBSCREENLIST()
  1473.  PUBSCREENLIST()                        PUBSCREENLIST()
  1474.  PUBSCREENTOBACK()                      PUBSCREENTOBACK()
  1475.  PUBSCREENTOBACK()                      PUBSCREENTOBACK()
  1476.  PUBSCREENTOFRONT()                     PUBSCREENTOFRONT()
  1477.  PUBSCREENTOFRONT()                     PUBSCREENTOFRONT()
  1478.  QSORT()                                QSORT()
  1479.  READFILE()                             READFILE()
  1480.  Rechliches                             Copyright
  1481.  Schutzbits einer Datei auslesen        GETPROTECTION()
  1482.  Schutzbits einer Datei einstellen      SETPROTECTION()
  1483.  SETCOMMENT()                           SETCOMMENT()
  1484.  SETDEFAULTPUBSCREEN()                  SETDEFAULTPUBSCREEN()
  1485.  SETDEFAULTPUBSCREEN()                  SETDEFAULTPUBSCREEN()
  1486.  SETENV()                               SETENV()
  1487.  SETPROTECTION()                        SETPROTECTION()
  1488.  SETPUBSCREENMODES()                    SETPUBSCREENMODES()
  1489.  SETPUBSCREENMODES()                    SETPUBSCREENMODES()
  1490.  Stem-Variable als Textdatei speichern  WRITEFILE()
  1491.  Stichwortverzeichnis                   Index
  1492.  String mit Binärsuche suchen          BSEARCH()
  1493.  String mit Linearsuche suchen          LSEARCH()
  1494.  String mit Namensmuster vergleichen    MATCHPATTERN()
  1495.  Systemvoraussetzungen                  Systemvoraussetzungen
  1496.  Tastaturbedienung                      Das VIEWLIST() Fenster
  1497.  Textdatei in Stem-Variable einlesen    READFILE()
  1498.  UNSETENV()                             UNSETENV()
  1499.  Verzeichnis eines Pfades ermitteln     PATHPART()
  1500.  VIEWLIST()                             VIEWLIST()
  1501.  WHATIS()                               WHATIS()
  1502.  WHATIS()                               WHATIS()
  1503.  WHATISTYPES()                          WHATISTYPES()
  1504.  WHATISTYPES()                          WHATISTYPES()
  1505.  WRITEFILE()                            WRITEFILE()
  1506.  
  1507.